Módulo:FacebookCite
-- Este módulo implementa Plantilla:FacebookCite. -- Traducido de en:Module:FacebookCite de Wookieepedia -- Autor principal Mr. Stradivarius local p = {} local lang = mw.language.getContentLanguage() local currentTitle = mw.title.getCurrentTitle() local function makeCategoryLink(cat) -- "Category" se divide aquí para que el módulo no se ponga en la -- categoría "%s" cuando la pagina se guardade. return string.format('%s:%s', 'Categoría', cat) end local function makeWikitextError(msg) local ret = '' ret = ret .. string.format( 'error Plantilla:FacebookCite: %s.', msg ) if currentTitle.namespace 0 then ret = ret .. makeCategoryLink('Páginas con parámetros erróneos en plantillas') end return ret end local function formatDate(format, date) local success, date = pcall(lang.formatDate, lang, format, date) if success then return date end end local function makeLinkedDate(date) return formatDate('j F, Y', date) end local function formatDateAndTime(date, time) date = makeLinkedDate(date) if not date then return nil end if time then time = formatDate('H:i a', time) if not time then return nil end end if time then time = string.format(', %s', time) else time = '' end return date .. time end local function makeArchiveLink(archive, description) if archive:find('^http') then return string.format('%s', archive, description) else return string.format('%s', archive, description) end end function p._main(args) -- Validar los parámetros que siempre son necesarios if not args.description then return makeWikitextError( "el parámetro 'description' se debe especificar" ) end local ret = {} -- Función de acceso directo para agregar nuevas cadenas local function add(val) ret+ 1 = val end -- Icono Facebook add(' ') -- Iniciar detalles de la cita. Si se especificó una página de usuario, ignoramos los otros -- detalles de citación. if args.userpage then add(string.format( '%s en Facebook', args.userpage, args.description )) else -- Validar los parámetros que solo son necesarios -- si no se establece args.userpage. if not args.author or not args.dateposted then return makeWikitextError( "si el parámetro 'userpage' no se especifica, los parámetros " .. "'author' y 'dateposted' se deben especificar" ) elseif not args.link and not args.archive then return makeWikitextError( "si el parámetro 'userpage' no se especifica, 'link' o " .. "'archive' se deben especificar" ) end -- Enlace o enlace de archivo if args.link then add(string.format( '%s.', args.link, args.description )) elseif args.archive then add(makeArchiveLink(args.archive, args.description) .. '.') end -- Autor add(' ') add(args.author) -- Fecha y hora de publicación do local date = formatDateAndTime(args.dateposted, args.timeposted) if date then add(string.format(' (%s).', date)) elseif not args.timeposted then return makeWikitextError( "fecha no válida en parámetro 'dateposted'" ) else return makeWikitextError( "fecha no válida en parámetros 'dateposted' o 'timeposted'" ) end end -- Fecha y hora de acceso if args.dateaccessed then local date = formatDateAndTime(args.dateaccessed, args.timeaccessed) if date then add(string.format(' Recuperado el %s.', date)) elseif not args.timeaccessed then return makeWikitextError( "fecha no válida en parámetro 'dateaccessed'" ) else return makeWikitextError( "fecha no válida en parámetros 'dateaccessed' o 'timeaccessed'" ) end end -- Cita if args.quote then add(string.format(' "%s"', args.quote)) end -- Archivo if args.link and args.archive then local archive = makeArchiveLink(args.archive, 'copia de archivo') if args.archivedate then local date = makeLinkedDate(args.archivedate) if not date then return makeWikitextError( "fecha no válida en parámetro 'archivedate'" ) end archive = archive .. ' creado el ' .. date end add(string.format(' (%s)', archive)) elseif args.archivedate and not args.link then local date = makeLinkedDate(args.archivedate) if not date then return makeWikitextError( "fecha no válida en parámetro 'archivedate'" ) end add(string.format( ' (copia de archivo creada el %s)', date )) end end -- Imagen if args.image then add(string.format(' (captura de pantalla)', args.image)) end if args.noimage then add(string.format(' (El contenido ya no está disponible)')) end -- Categoría de seguimiento de captura de pantalla if not args.userpage and not args.archive and not args.image and not args.noimage and currentTitle.namespace 0 then add('Categoría:Citas de redes sociales sin capturas de pantalla') end return table.concat(ret) end function p.main(frame) local args = {} for k, v in pairs(frame:getParent().args) do v = v:match('^%s*(.-)%s*$') -- recortar espacios en blanco if v ~= '' then argsk = v end end return p._main(args) end return p --